package com.lvmama.rhino.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lvmama.rhino.entity.MonitorVO;
import com.lvmama.rhino.mapper.MonitorApiMapper;
import com.lvmama.rhino.pojo.OptionData;
import com.lvmama.rhino.pojo.monitor.MonitorApi;
import com.lvmama.rhino.service.MonitorApiService;

@Service("monitorApiService")
public class MonitorApiServiceImpl implements MonitorApiService{
    
    @Autowired
    private MonitorApiMapper monitorApiMapper;

    /**
     * 接口占比趋势
     * @param monitorVO
     * @return
     */
    @Override
    public List<OptionData> queryOptionDataList(MonitorVO monitorVO) {
        return monitorApiMapper.queryOptionDataList(monitorVO);
    }

    /**
     * 分页查询接口信息
     * @param monitorVO
     * @return
     */
    @Override
    public PageInfo<MonitorApi> queryMonitorApiPage(MonitorVO monitorVO) {
        PageHelper.startPage(monitorVO.getPage(), monitorVO.getPageSize());
        List<MonitorApi> monitorApiList = monitorApiMapper.queryMonitorApiList(monitorVO);
        PageInfo<MonitorApi> page = new PageInfo<MonitorApi>(monitorApiList);
        return page;
    }

    /**
     * 查询接口版本号
     * @param monitorVO
     * @return
     */
    @Override
    public String[] queryMonitorApiVersion(MonitorVO monitorVO) {
        return monitorApiMapper.queryMonitorApiVersion(monitorVO);
    }

    
    /**
     * 单个接口不同版本接口耗时
     * @param monitorVO
     * @return
     */
    @Override
    public List<MonitorApi> queryMonitorApiVersionList(MonitorVO monitorVO) {
        return monitorApiMapper.queryMonitorApiVersionList(monitorVO);
    }

    /**
     * 单个接口运营商调用耗时
     * @param monitorVO
     * @return
     */
    @Override
    public List<MonitorApi> queryMonitorApiOperatorsList(MonitorVO monitorVO) {
        return monitorApiMapper.queryMonitorApiOperatorsList(monitorVO);
    }
    
    /**
     * 查询前15天中各类别下的接口调用耗时--运营商
     */
    @Override
    public List<MonitorApi> selectDateByOperators(int i, int j) {
        return monitorApiMapper.selectDateByOperators(i,j);
    }

    /**
     * 查询前15天中各类别下的接口调用耗时--网络类型
     */
    @Override
    public List<MonitorApi> selectDateByNetworkType(int i, int j) {
        return monitorApiMapper.selectDateByNetworkType(i,j);
    }

    /**
     * 根据接口名分页查询接口搜索
     * @param monitorVO
     * @return
     */
    @Override
    public PageInfo<MonitorApi> queryMonitorApiSearchPage(MonitorVO monitorVO) {
        PageHelper.startPage(monitorVO.getPage(), monitorVO.getPageSize());
        List<MonitorApi> monitorApiSearchList = monitorApiMapper.queryMonitorApiSearchList(monitorVO);
        PageInfo<MonitorApi> page = new PageInfo<MonitorApi>(monitorApiSearchList);
        return page;
    }

    /**
     * 业务性能服务
     * @param monitorVO
     * @return
     */
    @Override
    public List<MonitorApi> querymonitorApiAvgTime(MonitorVO monitorVO) {
        return monitorApiMapper.querymonitorApiAvgTime(monitorVO);
    }

    /**
     * 接口信息
     * @param monitorVO
     * @return
     */
    @Override
    public PageInfo<MonitorApi> queryMonitorApiDetailedList(MonitorVO monitorVO) {
        PageHelper.startPage(monitorVO.getPage(), monitorVO.getPageSize());
        List<MonitorApi> monitorApiList = monitorApiMapper.queryMonitorApiDetailedList(monitorVO);
        PageInfo<MonitorApi> page = new PageInfo<MonitorApi>(monitorApiList);
        return page;
    }

    @Override
    public List<MonitorApi> queryMonitorApiNetworkTypeList(MonitorVO monitorVO) {
        return monitorApiMapper.queryMonitorApiNetworkTypeList(monitorVO);
    }

    /**
     * 接口总耗时占比(首包时间+传输时间)
     * @param monitorVO
     * @return
     */
    @Override
    public List<OptionData> queryTimeConsumingOptionDataList(MonitorVO monitorVO) {
        return monitorApiMapper.queryTimeConsumingOptionDataList(monitorVO);
    }

    /**
     * 接口总调用量
     * @param monitorVO
     * @return
     */
    @Override
    public List<MonitorApi> queryAmountSum(MonitorVO monitorVO) {
        return monitorApiMapper.queryAmountSum(monitorVO);
    }

    /**
     * 分页查询总耗时的接口信息
     * @param monitorVO
     * @return
     */
    @Override
    public PageInfo<MonitorApi> queryMonitorApiTotalPage(MonitorVO monitorVO) {
        PageHelper.startPage(monitorVO.getPage(), monitorVO.getPageSize());
        List<MonitorApi> monitorApiList = monitorApiMapper.queryMonitorApiTotalList(monitorVO);
        PageInfo<MonitorApi> page = new PageInfo<MonitorApi>(monitorApiList);
        return page;
    }

    
}
